﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BlackoutRugby.serviciosBase;
using servicios.http;
using BlackoutRugby.entity.liga;
using BlackoutRugby.servicios.http;
using BlackoutRugby.enums.solicitud;
using BlackoutRugby.xml.parser;
using BlackoutRugby.servicios.equipo;
using BlackoutRugby.entity.equipo;

namespace BlackoutRugby.servicios.liga
{
    public class ServicioLiga : ServicioLigaBase
    {

        ServicioHttp srvHttp;
        private static ServicioLiga srv;
        private ServicioEquipo srvEquipo;
        private static long idEquipo;

        private ServicioLiga(long ie)
        {
            idEquipo = ie;
            srvHttp = ServicioHttp.getInstance(ie);
            srvEquipo = ServicioEquipo.getInstance(ie);
        }

        public static ServicioLiga getInstance(long ie)
        {
            idEquipo = ie;
            if (srv == null)
                return srv = new ServicioLiga(ie);
            else
                return srv.conServiciosActualizados(ie);
        }

        private ServicioLiga conServiciosActualizados(long ie)
        {
            srvHttp = ServicioHttp.getInstance(ie);
            return this;
        }

        public override BlackoutRugby.entity.liga.LigaEntity obtenerClasificacion(long idLiga)
        {
            LigaEntity ligaEty = new LigaEntity();
            List<Parametro> lparams = new List<Parametro>();

            Parametro p1 = new Parametro(Parametro.TipoParametro.IdLiga, "" + idLiga);
            
            TipoSolicitud sol = new TipoSolicitud(TipoSolicitud.Tipo.ClasificacionLiga);
            lparams.Add(p1);

            //asdfasdadad
            string respuesta = srvHttp.enviarPost(sol, lparams);

            ligaEty = XmlParser.toLigaEntity(respuesta);

            completarInformacionLiga(ligaEty);

            return ligaEty;
        }

        private void completarInformacionLiga(LigaEntity ligaEty)
        {
            //TODO: No me gusta que esto este aqui.
            foreach (RowEntity r in ligaEty.filas)
            {
                InfoEquipoEntity ieety = srvEquipo.recuperarInfoEquipo(r.idEquipo);
                if (ieety != null)
                    r.nombreEquipo = ieety.nombre;
            }
        }
    }
}